  /**
  @addtogroup MDR1215LGI_I2C_Slave I2C Slave example for MDR1215LGI demo board
  @latexonly
  @verbatim
  ******************** (C) COPYRIGHT 2026 Milandr ******************************
  * @file    readme.txt
  * @author  Milandr Application Team
  * @version V0.1.0
  * @date    08/05/2026
  * @brief   Description of the I2C Slave Example.
  ******************************************************************************
  * THE PRESENT FIRMWARE IS FOR GUIDANCE ONLY. IT AIMS AT PROVIDING CUSTOMERS
  * WITH CODING INFORMATION REGARDING MILANDR'S PRODUCTS IN ORDER TO FACILITATE
  * THE USE AND SAVE TIME. MILANDR SHALL NOT BE HELD LIABLE FOR ANY
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES RESULTING
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR A USE MADE BY CUSTOMERS OF THE
  * CODING INFORMATION CONTAINED HEREIN IN THEIR PRODUCTS.
  ******************************************************************************
  @endverbatim
  @endlatexonly

@par Example Description

The example demonstrates I2C Slave operation with several virtual devices on a single I2C bus:
- EEPROM0 at address 0x50 emulates a 256-byte EEPROM memory.
  The device operates the standard callback-based I2C_Slave driver interface.

- EEPROM1 at address 0x51 emulates a 256-byte EEPROM memory.
  The device operates using low-level user handlers of the I2C_Slave driver.

- TEMP at address 0x48 emulates a register-mapped temperature sensor with
  registers TS_TEMP, TS_CSR, TS_TEMP_LOW, TS_TEMP_HIGH.
  The device operates the standard callback-based I2C_Slave driver interface.

All I2C virtual devices operate with 7-bit addressing and support operation in standard (100 kHz) and fast (400 kHz) modes.

The frequency of the microcontroller is set to 48 MHz using HSI (8 MHz) and PLL (multiplication by 6).

EEPROM devices use the EEPROM_Emul driver, which emulates the operation of EEPROM in Flash memory.
When EEPROM devices start, data is loaded from FLASH into a RAM buffer. Write operations update the RAM buffer and
saved back on STOP condition.

TEMP device uses internal ADC and Timer1 for operation.
The temperature value is calculated from the internal ADC temperature-sensor channel (single conversion mode)
and updated via a timer.

@par Directory contains:

    - src/main.c                        Main program
    - src/i2c_eeprom/i2c_eeprom.c       Common I2C EEPROM emulation
    - src/i2c_eeprom/i2c_eeprom_0.c     I2C EEPROM0 initialization and standard callbacks
    - src/i2c_eeprom/i2c_eeprom_1.c     I2C EEPROM1 initialization and low-level handlers
    - src/i2c_temp/i2c_temp.c           I2C temperature sensor emulation, ADC and TIMER configuration
    - Library/CMSIS                     MDR32VF0xI CMSIS library
    - Library/SPL                       MDR32VF0xI SPL library
    - Library/I2C_Slave/                I2C slave library for MDR1215LGI
    - Library/EEPROM_Emul/              Modified STM EEPROM emulator library for MDR1215LGI

@par Hardware and Software environment:

    - Configure the Eclipse IDE for Embedded C/C++ Developers, RISCV GCC toolchain and OpenOCD with Milandr MCUs support
      according to the article https://support.milandr.ru/base/primenenie/programmirovanie-32-razryadnykh-mk/nachalo-raboty/55472/.
    - Configure demo board jumpers and power supply according to the demo board documentation:
        - "SEL PWR" to select power supply;
        - TDO/TMS/TDI/TCK jumpers to setup external or on-board FT2232HL debugger usage;
        - Remove "RXD", "TXD", "RXD_LED", "TXD_LED" and "BTN_EN" jumpers.
    - Connect the I2C master device to the board: SCL - PD5, SDA - PD7.

@par How to use.

To launch the example, you must do the following:
    - Import the project into the Eclipse IDE.
    - Compile the project using one of the existing build configurations.
    - Run the project using one of the existing debug configurations.

 * <h3><center>&copy; COPYRIGHT 2026 Milandr</center></h3>
 */
